<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /* 
            特殊字符:
            * 匹配前一个表达式0次或者多次。>=0
            + 匹配前一个表达式1次或者多次。>=1
            ? 匹配前一个表达式1次或者0次。0|1

        */
        const re = /bo*/;//表达式中必须含有b o可以一次都不出现，也可以出现多次
        console.log(re.test("a"));
        console.log(re.test("aa"));
        console.log(re.test("A ghost boooooed"));   //booooo
        console.log(re.test("A bird warbled"));     //b

        const re1 = /a+/;
        console.log(re1.test("candy")); //a
        console.log(re1.test("caaaaaaandy"));   //aaaaaaa

        console.log("=======================================");
        const re2 = /e?le?/;//ele el le l 可以匹配这四种表达式
        console.log(re2.test("angel")); //  el
        console.log(re2.test("angel")); //  le

        /* 
            {n}：n 是一个正整数，匹配了前面一个字符刚好出现了 n 次。
            {n,}：n 是一个正整数，匹配前一个字符至少出现了 n 次。       
            {n,m}：n 和 m 都是整数。匹配前面的字符至少 n 次，最多 m 次。如果 n 或者 m 的值是 0，这个值被忽略。
         */
        console.log("=======================================");
        const re3 = /a{2}/;//表示a正好出现两次
        console.log(re3.test("candy")); //false
        console.log(re3.test("caandy")); // aa  true 

        console.log("=======================================");
        const re4 = /a{1,3}/;
        console.log(re4.test("candy")); //true
        console.log(re4.test("caaaaaaandy")); //true

        console.log("=======================================");
        const re5 = /^a{3,10}$/;
        console.log(re5.test("a")); //false
        console.log(re5.test("aa")); //false
        console.log(re5.test("aaa")); //true
        console.log(re5.test("aaaa")); //true
    </script>
</body>

</html>